package com.atguigu.gmall.realtime.beans;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.beanutils.BeanUtils;

import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;

/**
 * Author: Felix
 * Date: 2021/8/10
 * Desc: 支付宽表实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PaymentWide {
    //支付类id
    Long payment_id;//自己加的
    //交易内容
    String subject;
    //支付类型（微信 支付宝）
    String payment_type;
    //支付创建时间
    String payment_create_time;//自己加的
    //回调时间
    String callback_time;
    //订单明细id
    Long detail_id;
    //订单编号
    Long order_id ;
    //sku_id
    Long sku_id;
    //购买价格(下单时sku价格）
    BigDecimal order_price ;
    //购买个数
    Long sku_num ;
    //sku名称（冗余)
    String sku_name;
    //地区
    Long province_id;
    //订单状态
    String order_status;
    //用户id
    Long user_id;
    //支付金额
    BigDecimal total_amount;
    //促销金额
    BigDecimal activity_reduce_amount;
    //优惠券
    BigDecimal coupon_reduce_amount;
    //原价金额
    BigDecimal original_total_amount;
    //运费
    BigDecimal feight_fee;
    //拆分运费
    BigDecimal split_feight_fee;
    //拆分活动量
    BigDecimal split_activity_amount;
    //分券金额
    BigDecimal split_coupon_amount;
    //活动优惠分摊
    BigDecimal split_total_amount;
    //订单创建时间
    String order_create_time;//自己加的

    //--------其他维度的字段
    //省名称   省份表（base_province）
    String province_name;//查询维表得到
    //省行政区位码
    String province_area_code;
    //省国际编码
    String province_iso_code;
    //省ISO3166编码
    String province_3166_2_code;

    //用户年龄
    Integer user_age ;
    //用户性别 M男,F女   用户信息表（user_info）
    String user_gender;

    //商品id  SPU信息表（spu_info）
    Long spu_id;     //作为维度数据 要关联进来
    //品牌id
    Long tm_id;
    //三级分类id
    Long category3_id;
    //商品名称
    String spu_name;
    //属性值   品牌表（base_trademark）
    String tm_name;
    //三级分类名称   三级分类表（base_category3）
    String category3_name;

    //给宽表对象赋值方法
    public PaymentWide(PaymentInfo paymentInfo, OrderWide orderWide){
        mergeOrderWide(orderWide);
        mergePaymentInfo(paymentInfo);
    }

    //支付明细
    public void  mergePaymentInfo(PaymentInfo paymentInfo  )  {
        if (paymentInfo != null) {
            try {
                //BeanUtils是Apache提供的用于操作JAVA BEAN的工具包
                BeanUtils.copyProperties(this,paymentInfo);
                payment_create_time=paymentInfo.create_time;
                payment_id = paymentInfo.id;
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
    }

    //订单明细
    public void  mergeOrderWide(OrderWide orderWide  )  {
        if (orderWide != null) {
            try {
                BeanUtils.copyProperties(this,orderWide);
                order_create_time=orderWide.create_time;
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
    }
}
